/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.ucsur.puntodeventas.dataaccess;

import edu.ucsur.puntodeventas.businessentity.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 *
 * @author JORGE
 */
public class ADVenta {

    /* INICIO: Singleton */
    private static ADVenta _instance = null;

    public static ADVenta Instance()
    {
        if (_instance == null)
            _instance = new ADVenta();
        return _instance;    
    }
    /* FIN: Singleton */
    
    
    private Connection conn;   
    public int insertar(ENVenta oENVenta) throws Exception 
    {
        try 
        {
            Date now = new Date();
            conn = ADDBConnection.getConnection();
            //-- Armando la sentencia SQL
            String sql = "insert into Venta ( idCliente, idTipoDocumento, sNroDocumento, fFechaVenta, dTotalMontoBruto, dIgv, dDescuento, dTotalMontoNeto) " +
                        " values ( ?, ?, ?, ?, ?, ?, ?, ? )";
            //-- Preparando la sentencia en Java
            PreparedStatement pstmt = conn.prepareStatement(sql);
            //-- ¿Y como seteamos los parametros?
            //-- Simple, con setters
            pstmt.setInt(1, oENVenta.getidCliente());
            pstmt.setInt(2, oENVenta.getidTipoDocumento());
            pstmt.setString(3, oENVenta.getsNroDocumento());
            pstmt.setDate(4, new java.sql.Date(now.getTime()));
            pstmt.setDouble(5, oENVenta.getdTotalMontoBruto());
            pstmt.setDouble(6, oENVenta.getdIgv());
            pstmt.setDouble(7, oENVenta.getdDescuento());
            pstmt.setDouble(8, oENVenta.getdTotalMontoNeto());
            //-- Una vez que el SQL está listo para ejecutarse
            //-- se lanza. El resultado se recibe en una variable
            //-- de tipo ResultSet (cursor)
            pstmt.execute();
            return 1;
            } 
        catch (Exception ex) 
        {
            ex.printStackTrace();
            throw ex;
        } 
        finally 
        {
            conn.close();
        }
    }
    
     public int getMaxID() throws Exception {
        try {
		      conn = ADDBConnection.getConnection();
		      //-- Armando la sentencia SQL
		      String sql = "SELECT MAX(IDVENTA) IDVENTA FROM VENTA";
		      //-- Preparando la sentencia en Java
		      Statement pstmt = conn.createStatement();
		      //-- Una vez que el SQL está listo para ejecutarse
		      //-- se lanza. El resultado se recibe en una variable
		      //-- de tipo ResultSet (cursor)
		      ResultSet rs = pstmt.executeQuery(sql);
		      //-- Recorriendo el resultset
                      
                      int IdVenta=0;
		      while (rs.next()) {
		        IdVenta = rs.getInt("IDVENTA");
		      }
		      return IdVenta;
		    } catch (Exception ex) {
		      ex.printStackTrace();
		      throw ex;
		    } finally {
		      conn.close();
		    }
		  }

	
		  
}
